// ============================================================ //
// ============================================================ //
//
// @Group       : QiXin Supply Chain Team
// @Author      : ZhiQiang Cheng
// @Date        : 2024-07-10
// @Description : 应用程序入口
//
// ============================================================ //
// ============================================================ //

package main

import (
	"wooha-cache-hub/cache"
	"wooha-cache-hub/job"
	"wooha-cache-hub/model"

	"github.com/StarfishProgram/starfish-go-sdk/sdk"
	"github.com/StarfishProgram/starfish-go-sdk/sdkcodes"
	"github.com/StarfishProgram/starfish-go-sdk/sdkdb"
	"github.com/StarfishProgram/starfish-go-sdk/sdklog"
	"github.com/StarfishProgram/starfish-go-sdk/sdkuuid"
)

func main() {
	program := sdk.NewSignal()

	// ============================================================ //
	// 初始化配置
	// ============================================================ //

	sdkcodes.Init("wooha-cache-hub")
	model.ConfigInit("./")

	// ============================================================ //
	// 初始化日志
	// ============================================================ //

	sdklog.Init(&model.ConfigIns().Log)

	// ============================================================ //
	// 初始化UUID
	// ============================================================ //

	sdkuuid.Init(0)

	// ============================================================ //
	// 初始化Redis
	// ============================================================ //

	cache.Init(&model.ConfigIns().Redis)

	// ============================================================ //
	// 初始化数据源
	// ============================================================ //

	sdkdb.Init(&model.ConfigIns().Database)

	// ============================================================ //
	// 任务
	// ============================================================ //

	program.Add(job.Run(job.RoomNotice.Listen))
	program.Add(job.Run(job.RoomQueue.Listen))
	program.Add(job.Run(job.Room.Listen))
	program.Add(job.Run(job.UserFavorite.Listen))
	program.Add(job.Run(job.RoomVote.Listen))

	// 阻塞等待
	program.Waiting()
}
